#include <stdio.h>
#include <signal.h>
#include <setjmp.h>
#include <stdbool.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#include <gtk/gtk.h>

#include "app.h"
#include "log.h"

#include "communication_core.h"
#include "communication.h"
#include "interaction.h"
#include "gtk_buffer.h"

#define UNUSED(x) (void)x
jmp_buf buf;

/**
 * @brief   主函数
 */
int main(int argc, char* argv[])
{   
    int ret, ctrl_ret;
    func_t *init_ret;
    func_t p_func[OPTION_NUM];

    /* 初始化 */
    init_ret = init(p_func);
    if (init_ret == NULL) {
        DEBUG("INIT ERROR!");
        return 0;
    }
    
    /* 设置Ctrl+c跳转目的地 */
    ctrl_ret = setjmp(buf);
    if (ctrl_ret != 1) {
        /* 运行 */
    	ret = run();
        if (ret != true) {
            DEBUG("RUN ERROR!");
            return 0;
        }
    }
    
    return 0;
}